/*
Date:20220128 21:50PM
key:pos在左右边界情况下，还要再考虑是否有相邻。剩下的中间的一定有左右。
*/
class Solution {
public:
    char oneDelet(char c)
    {
        for(char tmp='a';tmp<='z';tmp++)
        {
            if(tmp!=c){return tmp;}
        }
        return '!';
    }
    char twoDelet(char c1,char c2)
    {
        for(char tmp='a';tmp<='z';tmp++)
        {
            if(tmp!=c1&&tmp!=c2){return tmp;}
        }
        return '!';
    }
    string modifyString(string s) {
            //统计？数字
            vector<int> questiong_pos;
            for(int i=0;i<s.size();i++)
            {
                if(s[i]=='?')
                {
                    questiong_pos.push_back(i);
                }
            }
            //
            for(int pos:questiong_pos)
            {
                if(pos==0)
                {
                    if(s.size()>1)
                    {
                        s[pos]=oneDelet(s[1]);
                    }else
                    {
                        s[pos]='a';
                    }
                    
                    continue;
                }
                if(pos==s.size()-1)
                {
                    if(s.size()>1)
                    {
                        s[pos]=oneDelet(s[s.size()-2]);
                    }else
                    {
                        s[pos]='a';
                    }
                }
                else
                {
                    s[pos]=twoDelet(s[pos-1],s[pos+1]);
                }
            }
            return s;
        
    }
};